大家好,今天我要介紹一下如何在python做檔案處理,在python中做檔案處理,雖然說不上經常用到,但是肯定會用到,而且用到的時候會非常好用。
f = open('iron_competition.txt', 'w', encoding="utf-8")
"""
我們可以在第二個參數進行開啟時權限設定
'r' :用唯讀模式開啟檔案
'w' :用唯寫模式開啟檔案
'a' :任何寫入檔案的資料會自動被加入到檔案的最後
'r+' :開啟檔案並可以進行讀取和寫入
"""
data = "鐵人賽比賽"
f.write(data)
f.close
一個簡單的完整的檔案處理流程就完成了,在open()的時候參數都要特別注意一下,像是檔名的名稱以及位置,權限的設定,上述其中一個參數只要設錯了,都會造成無法開啟,或者是能開,但是不能沒辦法寫入。開啟之後寫入資料,看起來都很正常,在最後這部分一定要進行close,他才會正常的關閉。
但是每次open之後最後都要寫上一行close(),有沒有想過這樣很麻煩,很希望可以每次在我用完這個檔案的時候就自動關閉,這樣還可以少寫一行程式,其實是可以的,這邊有一個with as的用法。
with open('iron_competition.txt', 'w', encoding="utf-8") as f:
data = "鐵人賽比賽"
f.write(data)
print("關閉前", f.closed) # 關閉前 False
print("關閉前", f.closed) # 關閉後 True
這邊除了可以使用write寫入一段字串,也可以使用writelines寫入一段list or set
with open('iron_competition.txt', 'r', encoding="utf-8") as f:
read_data = f.read() # 讀取整個檔案,參數可設定size
print(read_data)
print("關閉前", f.closed) # 關閉前 False
print("關閉前", f.closed) # 關閉後 True
read可以查看指定檔案大小的資料,預設會讀取整個檔案,也能夠使用readline一行一行讀取,也可以使用readlines一次讀取整個檔案存成一個列表
with as除了可以用在檔案的開關以外,其實只要有開->過程->關,有固定要開關的程式都可以使用with as,像是用在和資料庫連線池上,概念上可能會長這樣:
class Connection():
def __init__(self):
self.object = None
def __enter__(self):
print("啟動的程式碼")
self.object = "conntected"
return self.object
def __exit__(self, type, value, trackback):
print("關閉的程式碼")
self.object = "disconntected"
return self.object
with Connection() as c:
print("可以透過回傳的的物件進行操作")
# 啟動的程式碼
# 可以透過回傳的的物件進行操作
# 關閉的程式碼